package redis_springboot.demo.mq.config;

import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import redis_springboot.demo.mq.MQConst;

import java.util.HashMap;

/**
 * @author： pang-yun
 * @date： 2021-12-24 14:16
 * 功能目的 ：用于 插件的 配置类
 */
@Configuration
public class DelayQueueConfig {
    //延时队列
    @Bean
    public Queue delayedQueue() {
        return QueueBuilder.durable(MQConst.DELAY_QUEUE).build();
    }
    //声明  自定义交换机
    @Bean
    public CustomExchange delayExchange() {
        HashMap<String, Object> arguments = new HashMap<>();
        arguments.put("x-delayed-type", "direct");
        /**
         * 交换机 名称 类型  持久化 是否需要自动删除  其他参数
         */
        return new CustomExchange(MQConst.DELAY_EXCHANGE, MQConst.EXCHANGE_TYPE, true, false, arguments);
    }
    // 将两者绑定
    @Bean
    public Binding delayExchangeBindQueue(
            @Qualifier("delayExchange") Exchange exchange,
            @Qualifier("delayedQueue") Queue queue
    ) {
        return BindingBuilder.bind(queue).to(exchange).with(MQConst.DELAY_ROUTE_KEY).noargs();
    }
}
